package com.myown.jdk.design.impl;

import com.myown.jdk.design.Communication;
import com.myown.jdk.design.Factory;

/**
 * 建造者模式 <p>
 *
 * 首先，建造者模式的封装性很好。使用建造者模式可以有效的封装变化，
 * 在使用建造者模式的场景中，一般产品类和建造者类是比较稳定的，因
 * 此，将主要的业务逻辑封装在导演类中对整体而言可以取得比较好的稳
 * 定性。其次，建造者模式很容易进行扩展。如果有新的需求，通过实现
 * 一个新的建造者类就可以完成，基本上不用修改之前已经测试通过的代
 * 码，因此也就不会对原有功能引入风险。
 *
 * @author lincky
 * @version v1.0.0
 * @time 2017.03.24 14:18
 */
public class CommunicationAgent {

    private Factory factory;

    private Communication communication;

    public CommunicationAgent(Factory factory) {
        this.factory = factory;
        this.communication = factory.produce();
    }

    public void communicate() {
        communication.send();
        communication.receive();
    }

}
